package co.yixiang.yshop.framework.common.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;

import java.util.concurrent.TimeUnit;

@Getter
@AllArgsConstructor
public enum OrderDefaultRuleEnum {
    //用户下单后 x 分钟未付款，则用户订单自动取消
    ORDER_OUTTIME_UNPAY("order-unpay-cancel-queue", DefaultTime.defaultTime1, DefaultTime.defaultUnit1),

    //商家发货 x 天后，未确认收货，则用户订单自动确认收货
    ORDER_OUTTIME_UNCONFIRM("order-unconfirm-queue", DefaultTime.defaultTime2, DefaultTime.defaultUnit2),

    //用户提交售后 x 天，商家未审核，则售后申请自动通过 (同意售后，待审核->已审核，等待用户提交退货信息)
    AFTER_SALES_ORDER_OUTTIME_UNCONFIRM("order-aftersalesorder-unconfirm-queue", DefaultTime.defaultTime2, DefaultTime.defaultUnit2),

    //退款退货审核通过，用户超过 x 天未寄回商品，则售后自动取消(用户没有提交退货信息，则拒绝售后)
    AFTER_SALES_ORDER_USER_NO_RETURN_GOODS("order-aftersalesorder-user-return-goods-queue", DefaultTime.defaultTime2, DefaultTime.defaultUnit2),

    //用户寄回退货商品，商家超过 x 天未确认收货，售后订单自动确认收货（同意售后，复用 AFTER_SALES_ORDER_OUTTIME_UNCONFIRM的)
    AFTER_SALES_ORDER_USER_RETURN_GOODS_CONFIRM(AFTER_SALES_ORDER_OUTTIME_UNCONFIRM.getKey(), DefaultTime.defaultTime2, DefaultTime.defaultUnit2),

    //订单确认收货 x 天后，不可申请售后
    ORDER_MAX_CAN_AFTER_SALE_TIME("close-after-sale-key", DefaultTime.defaultTime2, DefaultTime.defaultUnit2),
    //订单确认收货 x 天后，不可进行评价
    ORDER_MAX_CAN_COMMENT_TIME("", DefaultTime.defaultTime2, DefaultTime.defaultUnit2),

    ;

    private final String key;
    private final long defaultValue;
    private final TimeUnit unit;

    private static class DefaultTime {
        public static final long defaultTime1 = 30;
        public static final long defaultTime2 = 7;
        public static final TimeUnit defaultUnit1 = TimeUnit.MINUTES;
        public static final TimeUnit defaultUnit2 = TimeUnit.DAYS;
//        //todo   测试:都改为分钟
//        public static final TimeUnit defaultUnit2 = TimeUnit.MINUTES;
    }
}
